home *** CD-ROM | disk | FTP | other *** search
- Subject: v06i069: VT100TOOL for Sun's (vt100tool), Part10/10
- Newsgroups: mod.sources
- Approved: rs@mirror.UUCP
-
- Submitted by: linus!ell (Ed Lafferty)
- Mod.sources: Volume 6, Issue 69
- Archive-name: vt100tool/Part10
-
- [ I generally dislike posting anything other than source code. In this
- case, however, I'm making an exception because (a) there's no other
- way to do it; and (b) there is apparently a lot of demand for this
- program. So, I took the object and data files in the fontdir and
- libdir directories and uuencode'd them. The decode.sh script in the
- toplevel directory will uudecode them and remove the uu.xxx files;
- the lists the files by name, so you can check if you're missing
- something. This comment will appear at the beginning of each of the
- postings of this program. --r$ ]
-
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line,
- # then unpack it by saving it in a file and typing "sh file".
- # Wrapped by rs@mirror.UUCP on Thu Jul 17 00:22:53 EDT 1986
- # Contents: vt100tool.c
-
- echo x - vt100tool.c
- sed 's/^XX//' > "vt100tool.c" <<'@//E*O*F vt100tool.c//'
- XX#ifndef lint
- XXstatic char sccsid[] = "@(#)vt100tool.c 1.3 86/04/15 Copyr 1985 MITRE Corp.";
- XX#endif
-
-
- XX/*
- XX * MITRE Corp. Bedford, MA
- XX */
-
- XX/*
- XX * Overview: panelvttool: A shell subwindow emulating
- XX * a vt100 terminal
- XX *
- XX */
-
- XX/*
- XX * Author: Edward L. Lafferty
- XX */
-
- XX#include <suntool/tool_hs.h>
-
- XX#include <suntool/ttysw.h>
- XX#include <stdio.h>
- XX#include <suntool/panel.h>
- XX#include "vconfig.h"
- XX#include <suntool/ttysw_impl.h>
- XXstatic short ic_image[258] = {
- XX#include "vshelltool.icon"
- XX};
-
- XX#include <suntool/ttytlsw.h>
- XX#include <sunwindow/window_hs.h>
- XX#include <pixrect/pixrect_hs.h>
- XX#include <sundev/kbio.h>
- XX#include <sundev/kbd.h>
-
-
- XXextern int winheightp, winwidthp;
-
- XXmpr_static(shellic_mpr, 64, 64, 1, ic_image);
-
- XXstatic struct icon icon = {64, 64, (struct pixrect *)NULL, 0, 0, 64, 64,
- XX &shellic_mpr, 0, 0, 0, 0, (char *)NULL, (struct pixfont *)NULL,
- XX ICON_BKGRDGRY};
-
-
- XX static sigwinchcatcher(), sigchldcatcher(),
- XX sigtermcatcher(),setup_proc(), keyboard_proc(), button_proc();
-
- XXstatic struct tool *tool;
- XXstruct toolsw *ttysw;
-
- XXstatic struct toolsw *setupsw, *arrowsw, *keypadsw, *normkeysw;
- XXstatic struct singlecolor scr_foreground = {100,100,100};
- XXstatic struct singlecolor scr_background = {0, 0, 0};
- XXstatic caddr_t setup_button, keyboard_button;
-
- XXstatic caddr_t local_choice, scroll_choice, screen_choice,
- XX cursor_choice,xon_choice,ansi_choice,wrap_choice,
- XX newline_choice, size_choice, answerback_text, baud_rate,
- XX label_choice;
- XXstatic caddr_t PF1_button, PF2_button, PF3_button, PF4_button, R1_button,
- XX R2_button,R3_button,R4_button,R5_button,R6_button,
- XX R7_button,R8_button,R9_button,R0_button,enter_button,
- XX dot_button,comma_button,up_button,down_button,
- XX left_button,right_button, minus_button;
-
-
- XXstatic local_proc(), scroll_proc(), screen_proc(),
- XX cursor_proc(),xon_proc(),ansi_proc(),wrap_proc(),
- XX newline_proc(), size_proc(), baud_rate_proc(),
- XX answer_proc(), label_proc(), norm_proc();
-
- XXstatic char *normalname = "VT100 Shell 2.0";
- XXstatic Panel setup, arrow, keypad, normkey;
- XXstatic struct pixfont *font;
-
- XX/* so we can set locally
- XX and still inform the emulator*/
- XXextern int newline, wrap,cursor,vt52mode,big_screen,rev_screen, local;
- XXextern char answer_message[];
-
- XX/* defined in the emulator */
- XXextern char* translate_key();
- XXextern char main_font_directory[];
-
- XXmain(argc, argv)
- XX int argc;
- XX char **argv;
- XX{
- XX char *toolname = normalname;
- XX char *tool_name = argv[0];
- XX char **tool_attrs = NULL;
-
-
- XX if(tool_parse_all(&argc,argv,&tool_attrs, tool_name) == -1)
- XX {
- XX tool_usage(tool_name);
- XX exit(1);
- XX }
- XX /*
- XX * Create tool window
- XX */
- XX tool = tool_make(WIN_NAME_STRIPE,TRUE,
- XX WIN_ICON, &icon,
- XX WIN_LABEL,normalname,
- XX WIN_COLUMNS,83,
- XX WIN_WIDTH, 680,
- XX WIN_HEIGHT, 600,
- XX 0);
-
- XX tool_free_attribute_list(tool_attrs);
- XX /*
- XX * Create tty subwindow
- XX * Libsuntool now has vt100 code instead of ansi
- XX * Communicate with emulator via envirionment variable VTFONTS
- XX */
- XX setenv("VTFONTS", MAIN_FONT_DIR);
- XX ttysw = ttysw_createtoolsubwindow(tool, "ttysw", TOOL_SWEXTENDTOEDGE,
- XX 384);
- XX if (ttysw == (struct toolsw *)NULL)
- XX exit(1);
- XX
- XX setupsw = panel_create(tool, 0);
- XX setup = (Panel) setupsw->ts_data;
-
- XX strcpy(main_font_directory,MAIN_FONT_DIR);
-
- XX /* create the items for setup of vt100 screen */
- XX setup_button = panel_create_item(setup,PANEL_BUTTON,
-
- XX PANEL_NOTIFY_PROC,setup_proc,
-
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(setup,
- XX "Setup",
- XX 7,
- XX NULL ),
- XX 0);
-
- XX /* Set up the mouse driven keyboard */
-
- XX keyboard_button = panel_create_item(setup,PANEL_BUTTON,
- XX PANEL_NOTIFY_PROC,keyboard_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(setup,
- XX "Keyboard",
- XX 8,
- XX NULL ),
- XX 0);
- XX label_choice = panel_create_item(setup, PANEL_CHOICE,
- XX PANEL_SHOW_ITEM, TRUE,
- XX PANEL_LABEL_STRING, "Key Labels",
- XX PANEL_CHOICE_STRINGS,"Normal", "IBM",
- XX "MRED","WD11",
- XX 0,
- XX PANEL_NOTIFY_PROC, label_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_ALL,
- XX PANEL_FEEDBACK, PANEL_INVERTED,
- XX 0);
-
-
- XX local_choice = panel_create_item(setup,PANEL_CHOICE,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CHOICE_STRINGS,"Online","Local",0,
- XX PANEL_NOTIFY_PROC, local_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
- XX 0);
-
- XX scroll_choice = panel_create_item(setup,PANEL_CHOICE,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CHOICE_STRINGS,"Smooth","Jump",0,
- XX PANEL_NOTIFY_PROC, scroll_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
- XX 0);
-
- XX screen_choice = panel_create_item(setup,PANEL_CHOICE,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CHOICE_STRINGS,"Dark","Light",0,
- XX PANEL_NOTIFY_PROC, screen_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
- XX 0);
-
- XX cursor_choice = panel_create_item(setup,PANEL_CHOICE,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CHOICE_STRINGS,"Block","Under",0,
- XX PANEL_NOTIFY_PROC, cursor_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
- XX 0);
-
- XX xon_choice = panel_create_item(setup,PANEL_CHOICE,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CHOICE_STRINGS,"Xon","No-xon",0,
- XX PANEL_NOTIFY_PROC, xon_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
- XX 0);
-
- XX wrap_choice = panel_create_item(setup,PANEL_CHOICE,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CHOICE_STRINGS,"No Wrap","Wrap",0,
- XX PANEL_NOTIFY_PROC, wrap_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
- XX 0);
-
- XX newline_choice = panel_create_item(setup,PANEL_CHOICE,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CHOICE_STRINGS,"Newline","No Newline",0,
- XX PANEL_NOTIFY_PROC, newline_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
- XX 0);
-
- XX ansi_choice = panel_create_item(setup,PANEL_CHOICE,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CHOICE_STRINGS,"ANSI","VT-52",0,
- XX PANEL_NOTIFY_PROC, ansi_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
- XX 0);
-
- XX size_choice = panel_create_item(setup,PANEL_CHOICE,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CHOICE_STRINGS,"80 Col","132 Col",0,
- XX PANEL_NOTIFY_PROC, size_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
- XX 0);
- XX answerback_text = panel_create_item(setup,PANEL_TEXT,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_LABEL_STRING, "Answerback:",
- XX PANEL_NOTIFY_LEVEL, PANEL_NONE,
- XX PANEL_VALUE, "",
- XX PANEL_VALUE_DISPLAY_LENGTH, 20,
- XX 0);
- XX/* baud_rate = panel_create_item(setup, PANEL_CHOICE,
- XX PANEL_LABEL_STRING, "Baud RATE",
- XX PANEL_CHOICE_STRINGS,"75","110","150","300","600","1200",
- XX "2400","4800","9600", "19200",0,
- XX PANEL_NOTIFY_PROC, baud_rate_proc,
- XX PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
- XX PANEL_SHOW_ITEM,FALSE,
- XX 0);
- XX*/
-
- XX panel_set(setup,
- XX PANEL_HEIGHT, PANEL_FIT_ITEMS,
- XX PANEL_WIDTH, PANEL_CU(80),
- XX 0);
-
- XX /* Set up keypad */
- XX /* Client data item is used by key process to determine which
- XX key was moused. */
-
- XX keypadsw = panel_create(tool,
- XX PANEL_HEIGHT, PANEL_CU(27),
- XX PANEL_WIDTH, PANEL_CU(30),
- XX PANEL_ITEM_X_GAP,1,
- XX PANEL_ITEM_Y_GAP,1,
- XX 0);
- XX keypad = (Panel) keypadsw->ts_data;
-
- XX PF1_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, (int)11,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "PF1",
- XX 5,
- XX NULL),
- XX 0);
-
- XX PF2_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, (int)12,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "PF2",
- XX 5,
- XX NULL),
- XX 0);
- XX PF3_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, (int)13,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "PF3",
- XX 5,
- XX NULL),
- XX 0);
-
- XX PF4_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, (int) 14,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "PF4",
- XX 5,
- XX NULL),
- XX 0);
-
- XX R7_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 7,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "7",
- XX 5,
- XX NULL),
- XX 0);
-
- XX R8_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 8,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "8",
- XX 5,
- XX NULL),
- XX 0);
-
- XX R9_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 9,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "9",
- XX 5,
- XX NULL),
- XX 0);
-
- XX minus_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 15,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "-",
- XX 5,
- XX NULL),
- XX 0);
-
- XX R4_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 4,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "4",
- XX 5,
- XX NULL),
- XX 0);
-
- XX R5_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 5,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "5",
- XX 5,
- XX NULL),
- XX 0);
-
- XX R6_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 6,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "6",
- XX 5,
- XX NULL),
- XX 0);
-
- XX comma_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 16,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX ",",
- XX 5,
- XX NULL),
- XX 0);
-
- XX R1_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 1,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "1",
- XX 5,
- XX NULL),
- XX 0);
-
- XX R2_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 2,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "2",
- XX 5,
- XX NULL),
- XX 0);
-
- XX R3_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 3,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "3",
- XX 5,
- XX NULL),
- XX 0);
- XX enter_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 17,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "Enter",
- XX 5,
- XX NULL),
- XX 0);
- XX R0_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 10,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX "0",
- XX 13,
- XX NULL),
- XX 0);
-
- XX dot_button = panel_create_item(keypad, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 18,
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(keypad,
- XX ".",
- XX 5,
- XX NULL),
- XX 0);
-
- XX arrowsw = panel_create(tool, 0);
- XX arrow = (Panel) arrowsw->ts_data;
-
- XX up_button = panel_create_item(arrow, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 19,
- XX PANEL_ITEM_X, PANEL_CU(8),
- XX PANEL_ITEM_Y, PANEL_CU(1),
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(arrow,
- XX "^",
- XX 5,
- XX NULL),
- XX 0);
- XX down_button = panel_create_item(arrow, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 21,
- XX PANEL_ITEM_X, PANEL_CU(8),
- XX PANEL_ITEM_Y, PANEL_CU(3),
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(arrow,
- XX "v",
- XX 5,
- XX NULL),
- XX 0);
- XX left_button = panel_create_item(arrow, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 22,
- XX PANEL_ITEM_X, PANEL_CU(2),
- XX PANEL_ITEM_Y, PANEL_CU(2),
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(arrow,
- XX "<--",
- XX 5,
- XX NULL),
- XX 0);
- XX right_button = panel_create_item(arrow, PANEL_BUTTON,
- XX PANEL_SHOW_ITEM, FALSE,
- XX PANEL_CLIENT_DATA, 20,
- XX PANEL_ITEM_X, PANEL_CU(15),
- XX PANEL_ITEM_Y, PANEL_CU(2),
- XX PANEL_NOTIFY_PROC, button_proc,
- XX PANEL_LABEL_IMAGE,
- XX panel_button_image(arrow,
- XX "-->",
- XX 5,
- XX NULL),
- XX 0);
- XX panel_fit_height(arrow);
-
-
-
- XX label_setup();
-
-
- XX /*
- XX * Install tool in tree of windows
- XX */
- XX signal(SIGWINCH, sigwinchcatcher);
- XX tool_install(tool);
-
- XX /*
- XX * Start tty process
- XX */
- XX signal(SIGCHLD, sigchldcatcher);
- XX signal(SIGTERM, sigtermcatcher);
-
- XX if (ttysw_fork(ttysw->ts_data, ++argv,
- XX &ttysw->ts_io.tio_inputmask,
- XX &ttysw->ts_io.tio_outputmask,
- XX &ttysw->ts_io.tio_exceptmask) == -1) {
- XX perror("vt100tool");
- XX exit(1);
- XX }
- XX /*
- XX * Handle input
- XX */
- XX tool_select(tool, 1 /* means wait for child process to die*/);
- XX /*
- XX * Cleanup
- XX */
- XX tool_destroy(tool);
- XX exit(0);
- XX}
-
- XXstatic
- XXsigchldcatcher()
- XX{
- XX tool_sigchld(tool);
- XX}
-
- XXstatic
- XXsigwinchcatcher()
- XX{
- XX tool_sigwinch(tool);
- XX}
-
- XXstatic
- XXsigtermcatcher()
- XX{
- XX ttysw_done(ttysw->ts_data);
- XX exit(0);
- XX}
- XXstatic int insetup = 0;
- XXstatic int inkeyboard = 0;
-
- XXstatic
- XXsetup_proc(item,event)
- XX Panel_item item;
- XX struct inputevent *event;
- XX{
- XX if(insetup == 0)
- XX {
- XX panel_set(local_choice,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(scroll_choice,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(screen_choice,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(cursor_choice,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(xon_choice,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(ansi_choice,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(wrap_choice,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(newline_choice,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(answerback_text,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(baud_rate,PANEL_SHOW_ITEM,TRUE,0);
- XX insetup = 1;
- XX }
- XX else
- XX {
- XX panel_set(local_choice,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(scroll_choice,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(screen_choice,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(cursor_choice,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(xon_choice,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(ansi_choice,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(wrap_choice,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(newline_choice,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(answerback_text,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(baud_rate,PANEL_SHOW_ITEM,FALSE,0);
- XX strcpy(answer_message,(char*) panel_get_value(answerback_text));
- XX insetup = 0;
- XX }
- XX}
-
- XX/* Toggle the appearance of the panel keyboard */
-
- XXstatic
- XXkeyboard_proc(item,event)
- XX Panel_item item;
- XX struct inputevent *event;
- XX{
- XX if(inkeyboard == 0)
- XX {
- XX panel_set(PF1_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(PF2_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(PF3_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set(PF4_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( R7_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( R8_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( R9_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( minus_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( R4_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( R5_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( R6_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( comma_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( R1_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( R2_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( R3_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( R0_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( dot_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( enter_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( up_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( down_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( right_button,PANEL_SHOW_ITEM,TRUE,0);
- XX panel_set( left_button,PANEL_SHOW_ITEM,TRUE,0);
- XX inkeyboard = 1;
- XX }
- XX else
- XX {
- XX panel_set(PF1_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(PF2_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(PF3_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set(PF4_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( R7_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( R8_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( R9_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( minus_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( R4_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( R5_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( R6_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( comma_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( R1_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( R2_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( R3_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( R0_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( dot_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( enter_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( up_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( down_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( right_button,PANEL_SHOW_ITEM,FALSE,0);
- XX panel_set( left_button,PANEL_SHOW_ITEM,FALSE,0);
- XX inkeyboard = 0;
- XX }
- XX}
-
- XX/* What to do when a button is clicked */
- XX/* Since the meaning of the keys is a function of variables set in
- XX the vt100 environment, this routine uses the translator which
- XX is used to interpret real sun-2 keyboard actions: translate_key()
- XX*/
-
- XXstatic
- XXbutton_proc(item, event)
- XX Panel_item item;
- XX struct inputevent event;
- XX{
- XX int button_pushed = 0;
- XX extern struct ttysubwindow *_ttysw;
- XX char * keystr;
- XX button_pushed = (int) panel_get(item, PANEL_CLIENT_DATA);
- XX switch (button_pushed)
- XX {
- XX case 11:
- XX keystr = translate_key(KEY_RIGHT(1));
- XX break;
- XX case 12:
- XX keystr = translate_key(KEY_RIGHT(2));
- XX break;
- XX case 13:
- XX keystr = translate_key(KEY_RIGHT(3));
- XX break;
- XX case 7:
- XX keystr = translate_key(KEY_RIGHT(4));
- XX break;
- XX case 8:
- XX keystr = translate_key(KEY_RIGHT(5));
- XX break;
- XX case 9:
- XX keystr = translate_key(KEY_RIGHT(6));
- XX break;
- XX case 4:
- XX keystr = translate_key(KEY_RIGHT(7));
- XX break;
- XX case 5:
- XX keystr = translate_key(KEY_RIGHT(8));
- XX break;
- XX case 6:
- XX keystr = translate_key(KEY_RIGHT(9));
- XX break;
- XX case 1:
- XX keystr = translate_key(KEY_RIGHT(10));
- XX break;
- XX case 2:
- XX keystr = translate_key(KEY_RIGHT(11));
- XX break;
- XX case 3:
- XX keystr = translate_key(KEY_RIGHT(12));
- XX break;
- XX case 10:
- XX keystr = translate_key(KEY_RIGHT(13));
- XX break;
- XX case 18:
- XX keystr = translate_key(KEY_RIGHT(14));
- XX break;
- XX case 17:
- XX keystr = translate_key(KEY_RIGHT(15));
- XX break;
- XX case 19:
- XX keystr = translate_key(KEY_TOP(3));
- XX break;
- XX case 21:
- XX keystr = translate_key(KEY_TOP(4));
- XX break;
- XX case 22:
- XX keystr = translate_key(KEY_TOP(5));
- XX break;
- XX case 20:
- XX keystr = translate_key(KEY_TOP(6));
- XX break;
- XX case 14:
- XX keystr = translate_key(KEY_TOP(7));
- XX break;
- XX case 15:
- XX keystr = translate_key(KEY_TOP(8));
- XX break;
- XX case 16:
- XX keystr = translate_key(KEY_TOP(9));
- XX break;
- XX default:
- XX keystr = "";
- XX }
- XX if(local)
- XX ttysw_output(_ttysw,keystr,strlen(keystr));
- XX else
- XX {
- XX write(_ttysw->ttysw_pty,keystr, strlen(keystr));
- XX /* Sorry about this hack */
- XX /* We have to fake out the ttysw_input routine */
- XX /* since it only queues up the input till the next */
- XX /* real input event. We will actually write to the */
- XX /* pty and not put the text into the input queue.*/
- XX }
-
- XX}
-
-
-
- XXstatic
- XXlocal_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX local = value;
- XX}
-
- XXstatic
- XXscroll_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX}
- XXstatic
- XXscreen_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX/* Never could get this to work right!
-
- XX (value == 0) ? pw_whiteonblack(tool->tl_pixwin, 0, 1)
- XX :pw_blackonwhite(tool->tl_pixwin,0 , 1);
- XX (value == 0) ? rev_screen = 0:1;
- XX pw_writebackground(tool->tl_pixwin, 0, 0,
- XX winwidthp, winheightp, PIX_NOT(PIX_DST));
- XX*/
- XX}
-
-
- XXstatic
- XXcursor_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX}
- XXstatic
- XXxon_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX}
- XXstatic
- XXansi_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX}
- XXstatic
- XXwrap_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX wrap = value;
- XX}
- XXstatic
- XXnewline_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX newline = value;
- XX}
- XXstatic
- XXsize_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX big_screen = value;
- XX}
-
- XXstatic
- XXbaud_rate_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX}
-
- XXstatic
- XXlabel_setup()
- XX{
- XX keys[(int)panel_get(PF1_button,PANEL_CLIENT_DATA)].button_handle = PF1_button;
- XX keys[(int)panel_get(PF2_button,PANEL_CLIENT_DATA)].button_handle = PF2_button;
- XX keys[(int)panel_get(PF3_button,PANEL_CLIENT_DATA)].button_handle = PF3_button;
- XX keys[(int)panel_get(PF4_button,PANEL_CLIENT_DATA)].button_handle = PF4_button;
- XX keys[(int)panel_get(R7_button,PANEL_CLIENT_DATA)].button_handle = R7_button;
- XX keys[(int)panel_get(R8_button,PANEL_CLIENT_DATA)].button_handle = R8_button;
- XX keys[(int)panel_get(R9_button,PANEL_CLIENT_DATA)].button_handle = R9_button;
- XX keys[(int)panel_get(minus_button,PANEL_CLIENT_DATA)].button_handle = minus_button;
- XX keys[(int)panel_get(R4_button,PANEL_CLIENT_DATA)].button_handle = R4_button;
- XX keys[(int)panel_get(R5_button,PANEL_CLIENT_DATA)].button_handle = R5_button;
- XX keys[(int)panel_get(R6_button,PANEL_CLIENT_DATA)].button_handle = R6_button;
- XX keys[(int)panel_get(comma_button,PANEL_CLIENT_DATA)].button_handle = comma_button;
- XX keys[(int)panel_get(R1_button,PANEL_CLIENT_DATA)].button_handle = R1_button;
- XX keys[(int)panel_get(R2_button,PANEL_CLIENT_DATA)].button_handle = R2_button;
- XX keys[(int)panel_get(R3_button,PANEL_CLIENT_DATA)].button_handle = R3_button;
- XX keys[(int)panel_get(R0_button,PANEL_CLIENT_DATA)].button_handle = R0_button;
- XX keys[(int)panel_get(dot_button,PANEL_CLIENT_DATA)].button_handle = dot_button;
- XX keys[(int)panel_get(enter_button,PANEL_CLIENT_DATA)].button_handle = enter_button;
- XX keys[(int)panel_get(up_button,PANEL_CLIENT_DATA)].button_handle = up_button;
- XX keys[(int)panel_get(down_button,PANEL_CLIENT_DATA)].button_handle = down_button;
- XX keys[(int)panel_get(right_button,PANEL_CLIENT_DATA)].button_handle = right_button;
- XX keys[(int)panel_get(left_button,PANEL_CLIENT_DATA)].button_handle = left_button;
- XX}
-
- XXstatic
- XXlabel_proc(item,value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
- XX{
- XX int i;
- XX switch (value){
- XX case 0:
- XX for(i = 1; i <= 22; i++)
- XX panel_set(keys[i].button_handle,
- XX PANEL_LABEL_IMAGE, panel_button_image(keypad,
- XX keys[i].norm_label,
- XX (i == 10)?13:5,
- XX NULL),
- XX 0);
- XX break;
- XX case 2:
- XX for(i = 1; i <= 22; i++)
- XX panel_set(keys[i].button_handle,
- XX PANEL_LABEL_IMAGE,panel_button_image(keypad,
- XX keys[i].mred_label,
- XX (i == 10)?13:5,
- XX NULL),
- XX 0);
- XX break;
- XX case 1:
- XX for(i = 1; i <= 22; i++)
- XX panel_set(keys[i].button_handle,
- XX PANEL_LABEL_IMAGE, panel_button_image(keypad,
- XX keys[i].ibm_label,
- XX (i ==10)?13 : 5,
- XX NULL),
- XX 0);
- XX break;
- XX case 3:
- XX for(i = 1; i <= 22; i++)
- XX panel_set(keys[i].button_handle,
- XX PANEL_LABEL_IMAGE, panel_button_image(keypad,
- XX keys[i].wd11_label,
- XX (i ==10)?13 : 5,
- XX NULL),
- XX 0);
- XX break;
- XX case 4:
- XX for(i = 1; i <= 22; i++)
- XX panel_set(keys[i].button_handle,
- XX PANEL_LABEL_IMAGE, panel_button_image(keypad,
- XX keys[i].emacs_label,
- XX (i ==10)?13 : 5,
- XX NULL),
- XX 0);
- XX break;
- XX
- XX }
- XX}
-
- XXstatic
- XXnorm_proc(item, value,event)
- XX Panel_item item;
- XX int value;
- XX struct inputevent event;
-
- XX{}
- @//E*O*F vt100tool.c//
- chmod u=r,g=r,o=r vt100tool.c
-
- echo Inspecting for damage in transit...
- temp=/tmp/sharin$$; dtemp=/tmp/sharout$$
- trap "rm -f $temp $dtemp; exit" 0 1 2 3 15
- cat > $temp <<\!!!
- 939 1787 25546 vt100tool.c
- !!!
- wc vt100tool.c | sed 's=[^ ]*/==' | diff -b $temp - >$dtemp
- if test -s $dtemp
- then echo "Ouch [diff of wc output]:" ; cat $dtemp
- else echo "No problems found."
- fi
- exit 0
-